//入口函数
$NG.AllReady(
    function (page, { useAction }) {
        //表头页面逻辑
    },
    function (editPage, { useAction }) {
        //编辑页面逻辑
    },
    function (listPage, { useAction }) {
        //列表页面逻辑
    }
);


{//注意：很多方法和参数公司统一封装在$NG里


    $NG.getPageUI();//获取toolbar 表头 表体 列表的数据
    $NG.getPageState(); //获取表头 表体的数据
    $NG.getCmpApi('grid'); //列表容器数据

    //全局参数获取（单据状态otype、当前登录用户等）
    page.oType == page.OType.Add;
    $NG.getUser().userID;
    $NG.getUser().orgID
}


//页面条件
if (page.oType == "add" || page.oType == "edit" || page.oType == "view" || page.oType == "workflow") {
}



{ //获取容器数据和表单数据
    var mstform = $NG.getCmp('p_form_zbwjpg_m'); //获取表头数据
    var dgrid = $NG.getCmp('p_form_psnrmx_d'); //获取表体数据

    var mstform = $NG.getCmpApi('p_form_zbwjpg_m'); //获取表头数据
    var dgrid = $NG.getCmpApi('p_form_psnrmx_d'); //获取表体数据

    //列表容器数据
    $NG.getCmpApi('grid'); //列表容器数据
    //获取选中行数据
    $NG.getCmpApi('grid').getSelectedRow(); //推荐使用
    $NG.getCmpApi('grid').getSelectedData();

    var pcVal = mstform.getValues().pc; //获取表头字段值

}

{
    //功能扩展
    $NG.execServer("sfss", { phid: curorg_phid }, function (res) {
        const data = JSON.parse(res.data)[0].extendObjects; //单返回值
        const datas = JSON.parse(res.data).map((item) => item.extendObjects); //多返回值
    });

    $NG.execServer("getProjInfo", { phid_pc: phid_pc }, function (res) {
        const data = JSON.parse(res.data);
        const phid_org = data[0].extendObjects.phid_org;
        const phid_orgname = data[0].extendObjects.oname;
        const amt = data[0].extendObjects.approx_contract_fc;
        //项目公司、投资概算
        $NG.updateState((updater) => {
            updater.data.p_form_bid_mat_plan_m.setProps({
                u_pc_company: {
                    //帮助需要赋两个值value、label
                    value: phid_org,
                    label: phid_orgname,
                },
                u_invest_estimate: amt,
            });
        });
    });
}

//获取容器
var mstform = $NG.getCmpApi("p_form_bid_porject_m");
const mstform = $NG.getCmpApi("表头名称");
const grid = $NG.getCmpApi("表体名称");
var toolbar = $NG.getCmpApi("toolbar_top"); //表单布局不同，可能有差别，f12用选择器去看

//表头设置只读、必输、隐藏
mstform.setReadOnly("字段名称"); //设置只读
mstform.setReadOnly("字段名称", false); //取消只读
mstform.setRequired("字段名称"); //设置必输
mstform.setRequired("字段名称", false); //设置非必输
mstform.setHidden("字段名称"); //设置隐藏
mstform.setHidden("字段名称", false); //取消隐藏

{ //添加按钮
    $NG.getCmpApi('toolbar_top').insert({
        id: "myadd",
        text: "测试新增",
        iconCls: "icon-New"
    });
}
{
    //新增更新字段数据状态，赋初始值
    $NG.updateState((updater) => {
        updater.data.p_form_bid_porject_m.setProps({
            u_xmzt: '1',
            //帮助字段要加_name
            u_dept: args[0].u_zc_no.origin.u_dept,
            u_dept_name: jbbm,
            //帮助字段不加_name
            u_deal_psn: { //帮助字段赋值
                value: args[0].u_zc_no.origin.u_deal_psn, //主键
                label: jbr //中文
            }
        })
    });


    // 使用 querySelector 获取输入框元素
    var equipmentInput = document.querySelector('input[data-cid="PCFieldSetPanelGroup1_u_split_pc_no"]');

    // 检查是否获取到了元素
    if (equipmentInput) {
        // 直接将输入框的值赋为 "ABC"
        equipmentInput.value = "ABC";
        // 打印设置后的值（可选）
        console.log('设置后的值:', equipmentInput.value);
    } else {
        console.error('输入框元素未找到');
    }
}



//表体逻辑
{
    //7.表体插入数据
    dgrid.addRows([
        { u_no: "XM001", u_name: "测试111", u_amt: 123.56 },
        { u_no: "XM002", u_name: "测试222", u_amt: 234.56 },
        { u_no: "XM003", u_name: "测试333", u_amt: 456.56 },
    ]);
}




$NG.getPageUI();

// updater.editGrid.p_form_equipment_list_d.u_sub_no.setProps({
//     // clientSqlFilter: {
//     //     pphid: $NG.getCmpApi('p_form_equipment_list').getItem('u_cnt_no').getValue()
//     // },
//     cellStyle: { color: "blue", "text-decoration": "underline" },  //设置单元格样式
//     headerStyle: { color: "blue", "text-decoration": "underline" },//设置列头样式
// });



var dgrid = $NG.getCmpApi('p_form_equipment_list_d');

dgrid.getData()
dgrid.getData()[dgrid.getData().length - 1].__index__

var dgrid = $NG.getCmpApi('p_form_equipment_list_d');
dgrid.getRow()
// dgrid.refreshView()
// dgrid.getSelectedData()[0].u_u_cnt_list_no
// dgrid.getBusKey()
// dgrid.getCacheKey()
// dgrid.getColumnState().u_u_cnt_list_no
dgrid.getData()

// var dgrid = $NG.getCmpApi('p_form_equipment_split_d');
dgrid.moveRow(1, 2)
dgrid.addRows(dgrid.copyRow(dgrid.getSelectedData()))//新增行
dgrid.clearSelected()//取消选中行
dgrid.refreshData()
// dgrid.addRows



dgrid.moveRow(1, 2)



// dgrid.copyRow(dgrid.getSelectedData() )
dgrid.pasteRow()

dgrid.addRows(dgrid.copyRow(dgrid.getSelectedData()))//新增行
// dgrid.bindEvent()
// dgrid.
dgrid.clearSelected()//取消选中行
dgrid.deleteCheckedRows()
dgrid.deleteRows()
dgrid.deleteSelectedRow()
dgrid.deleteSelectedRows()


dgrid.moveRow()






dgrid.getAllData()
dgrid.getRow()
dgrid.getSelectedData() //获取当前选中的行数据。
dgrid.getSelectedIndex()
dgrid.getSelectedIndexes()

// dgrid.clearRows()//清空行
dgrid.clearData()//清空数据

var dgrid = $NG.getCmpApi('p_form_equipment_list_d');

// 获取当前选中行的索引（也可以是其他指定的插入位置）
var selectedIndex = dgrid.getSelectedIndex();

// 定义插入的新行数据
var newRow = {
    fieldName1: '新值1',
    fieldName2: '新值2',
    // 其他字段...
};

// 在指定索引位置插入新行
dgrid.addRows([newRow], selectedIndex);















console.log('Data ready event triggered');
//获取容器
var mstform = $NG.getCmpApi("p_form_Ad_Construction_ap");
if (mstform) {
    console.log(mstform.name + ' is ready');
}
// var grid = $NG.getCmpApi("表体名称");
//表头数据获取和赋值
mstform.getItem('u_ad_construction_progress').getValue();
mstform.getItem('u_ad_construction_progress').setValue(22);



useDataIndexChange(({ args, instance }) => {
    debugger;
    args[0].u_pc = args[0].u_htj - args[0].u_yjzzsr;
    args[0].u_bl = args[0].u_pc / args[0].u_htj;
    instance.updateRow(args[0]);
}, 'p_form_project_estimated_d.u_yjzzsr');


//表体当前选中行数据更新---->单个字段更新数据以及编辑事件
useDataIndexChange(({ args, table }) => {
    var gridTab = $NG.getCmpApi('p_form_swb_d'); //获取tab页数据
    var row = args[0];
    //赋值操作计算数量*单价=金额
    gridTab.updateRow(row);
}, 'prc');



// 表体当前选中行数据更新---->单个字段更新数据以及编辑事件
useDataIndexChange(({ args, table }) => {
    // 获取当前行数据
    var gridTab = $NG.getCmpApi('p_form_swb_d'); // 获取tab页数据
    var row = args[0];
    // 计算金额：数量 * 单价
    row.amount = row.quantity * row.prc; // 假设 row 中有 quantity 字段
    // 更新行数据
    gridTab.updateRow(row);
}, 'prc'); // 监听 prc 字段的变化


















$NG.AllReady(function (page, { useValuesChange }) {
    if (page.oType == page.OType.Add || page.oType == page.OType.Edit) {
        var dgrid1 = $NG.getCmpApi('p_form_equipment_list_impl');//获取明细控件
        useValuesChange(({ args }) => {
            console.log(args[0]);
            dgrid1.clearRows();//先清空明细
            if (dgrid1) {
                $NG.execServer('get_impl_cost_budget_info', {
                    phid_pc: "1"
                }, function (res) {
                    const data = JSON.parse(res.data);
                    console.log(res.data);
                    //默认增行,批量新增表体数据
                    var gridArr = []; //定义表体数组
                    var gridCount = res.count; //增加的行数,可根据从数据库从取出的数据总数增行
                    for (var i = 0; i < gridCount; i++) {
                        var gridObj = {
                        };
                        //对表体字段进行赋值,可以取数据库中的值进行赋值
                        gridObj.u_bill_no = data[i].extendObjects.bill_no;
                        gridObj.u_total_impl_amt = data[i].extendObjects.u_total_impl_labor_amt;
                        gridObj.u_total_daily_amt = data[i].extendObjects.u_total_daily_amt;
                        gridObj.u_total_sec_dev_amt = data[i].extendObjects.u_total_sec_dev_amt;
                        gridObj.u_invoice_type = data[i].extendObjects.u_invoice_type;
                        gridArr.push(gridObj);
                    }
                    //调用新增表体行数据的函数

                    dgrid1.addRows(gridArr);
                })
            }
        }, "p_form_equipment_list.u_product_line");//表头选择u_product_line字段
    }
})


//http://47.92.153.115/nglib/#/doc/

//二开脚本的入口，在回调函数中编写二开代码。
$NG.AllReady(function (page) {
    // TODO
});

{ //判断单据状态
    if (page.oType == page.OType.Add || page.oType == page.OType.Edit || page.oType == page.OType.View || page.oType == page.OType.WorkFlow) {
        console.log('新增'); //新增 修改 查看 工作流
    }
}



{
    //表头数据获取和赋值
    mstform.getItem('u_test_text').getValue();
    mstform.getItem('u_test_text').setValue('1111');

    dgrid.clearRows(); //清空表体全部数据
    dgrid.clearData(); // --保留单元格

}

{
    //字段属性设置
    var mstform = $NG.getCmpApi('p_form_bid_porject_m');
    mstform.setRequired('pc', true); //必输
    mstform.setRequired('pc', false); //非必输

    mstform.setReadOnly('pc', true); //只读
    mstform.setReadOnly('pc', false); //可编辑

    mstform.setHidden('bill_no', false); //显示
    mstform.setHidden('bill_no', true); //隐藏

    // 函数形式更新字段的属性
    $NG.updateUI(function (updater, state) {
        console.log('updater', updater);
        console.log('state', state);
        // 修改customfilebilltoform表单BilltoId字段的required属性
        updater.form.p_form_udf_test_m.bill_no.setProps({
            disabled: false, //可编辑
        });
    });

    //输入框字段加提示语
    mstform.setConfig({
        title: { placeholder: `提示语` }
    });

}



{ //按钮点击前事件
    useBeforeClick(async function ({ args }) {
        console.log(args);
        var pcVal = mstform.getValues().pc; //获取表头字段值
        console.log(pcVal);
        if (pcVal == null || pcVal == '' || pcVal == 'null') {
            $NG.alert('请先选择项目!!!');
            return false; // 取消向下执行
        }
    }, 'imp');

    //点击事件
    useClick(function ({ toolbar }) {
        $NG.execServer('PublicSQL', {}, function (res) {
            if (res.count > 0) {
                const data = JSON.parse(res.data)
                console.log(data);
            }
        });
    }, 'sql');

}



{
    //列表按钮菜单id用toolbar 表单按钮菜单id用toolbar_top
    //按钮可读
    $NG.getCmpApi('toolbar').setReadOnly('u_zz', false);
    //按钮只读
    $NG.getCmpApi('toolbar').setReadOnly('u_zz', true);

    //获取按钮栏数据
    $NG.getCmpApi('toolbar_top').getProps().buttons;

    //批量隐藏按钮
    var formToolbar = $NG.getCmpApi('toolbar_top');
    var btn = ['imp', 'insertrow', 'deleterow', 'addrow'];
    for (let index = 0; index < btn.length; index++) {
        formToolbar.hideButton(btn[index]);
    }

}

//帮助字段点击
useValuesChange(({ args }) => {
    console.log('args11', args);
    // var pcPhid = args[0].pc.PhId;//树形帮助
    var pcPhid = args[0].pc.value; //非树形帮助
    console.log('pcPhid00', pcPhid);
    if (pcPhid != '' || pcPhid != null || pcPhid != '0' || pcPhid != 'null') {
        pc_val = args[0].pc.PhId;
        console.log('pcPhid11', pcPhid);
    } else {
        pc_val = '';
        console.log('apcPhid222', pcPhid);
    }
    formGroup1.setConfig({
        u_zc_no: { clientSqlFilter: ('pc=' + pcPhid), placeholder: `第二步、选择招采项目编码` },
    });
}, 'p_form_bid_price_contrl_m.pc');



//项目公司根据组织过滤、项目按照组织过滤
mstform.setConfig({
    u_pc_company: { clientSqlFilter: ('phid=' + form.getValues().ocode), placeholder: `根据当前组织过滤` },
    pc: { clientSqlFilter: ('phid_org=' + form.getValues().ocode), placeholder: `根据当前组织过滤` },
});

//输入框字段加提示语
mstform.setConfig({
    title: { placeholder: `根据项目名称+计划类型自动生成` }
});

{ //调用数据库
    $NG.execServer('getTbType', {
        'phid': "111"
    }, function (res) {
        if (res.count > 0) {
            const data = JSON.parse(res.data);
            // console.log(res);res.data -- res.count -- data[0] -- data[0].extendObjects.lx
            var aa = data[0].extendObjects.lx;
        }
    })
}

{ //表体数据更新
    //表体当前选中行数据更新---->整行数据更新,包含每列的编辑事件
    useUpdateRow(({ args, table }) => {
        var gridTab = $NG.getCmpApi('p_form_swb_d'); //获取tab页数据
        const record = args[0];
        console.log('更新数据行', record);
        record.u_mll = GcDiv(GcSub(args[0].u_tbbj, args[0].u_cbj), args[0].u_tbbj); //赋值操作
        gridTab.updateRow(record);
    }, 'p_form_swb_d');

    //表体当前选中行数据更新---->单个字段更新数据以及编辑事件
    useDataIndexChange(({ args, table }) => {
        var gridTab = $NG.getCmpApi('p_form_swb_d'); //获取tab页数据
        var row = args[0];
        row.u_mll = GcDiv(GcSub(row.u_tbbj, row.u_cbj), row.u_tbbj); //赋值操作
        gridTab.updateRow(row);
    }, 'u_tbbj');


    //表体数据汇总
    useUpdateRows(({ args, table }) => {
        var gridTab = $NG.getCmpApi('p_form_bid_price_contrl_d'); //获取tab页数据
        var sumAmtDel = 0;
        const rows = args[0];
        rows.forEach((items) => {
            if (items.u_qty && items.u_prc) {
                sumAmtDel += items.u_pre_amt; //汇总数据
                items.u_amt = parseInt(items.u_qty) * parseInt(items.u_prc); //赋值操作
            }
            //汇总赋值到表头字段
            $NG.updateState((updater) => {
                updater.data.p_form_bid_mat_plan_m.setProps({
                    u_sum_amt: sumAmtDel
                })
            });

        });
        gridTab.updateRow(rows);
    }, 'p_form_bid_price_contrl_d');

}

{ //弹窗 提示框
    // 模态框弹出提示
    $NG.alert('模态弹出提示框');

    // 顶部居中显示并自动消失，是一种不打断用户操作的轻量级提示
    $NG.message('自动消失');

    // 确认提示框
    $NG.confirm('确认提交？').then(function (result) {
        //result确认返回true or false
        //TODO，true or false
    });

}

{ //表体默认增行并赋值(适用于第一个tab页)
    $NG.execServer('getTbType', {
        phid: "111"
    }, function (res) {
        const data = JSON.parse(res.data);
        // console.log(res);
        // console.log(res.data);
        // console.log(res.count);
        // console.log(data[0]);
        // console.log(data[0].extendObjects.lx);

        //默认增行,批量新增表体数据
        var gridArr = []; //定义表体数组
        var gridCount = res.count; //增加的行数,可根据从数据库从取出的数据总数增行
        for (var i = 0; i < gridCount; i++) {
            //列出需要赋值的表体字段
            var gridObj = {
                u_lx: '',
                u_psnr: ''
            };
            //对表体字段进行赋值,可以取数据库中的值进行赋值
            gridObj.u_lx = data[i].extendObjects.lx;
            gridObj.u_psnr = data[i].extendObjects.psnr;
            gridArr.push(gridObj);
        }
        //调用新增表体行数据的函数
        dgrid.addRows(gridArr);

    })
}

{ //获取所有tab页,并在点击时激活,为每个tab页添加点击事件,用于激活tab页 (适用于多个tab页)
    $NG.AllReady(function (page, { useDataIndexChange, useUpdateRow, useUpdateRows }) {

        var mstform = $NG.getCmpApi('p_form_zbwj_m');
        var dgrid = $NG.getCmpApi('p_form_psmxb_d');
        var dgrid1;
        var dgrid2;

        //获取所有tab页,并在点击时激活
        var tabPanel = document.getElementsByClassName('ant-tabs-tab-btn'); //获取所有tab页元素
        // 为每个tab页添加点击事件,用于激活tab页
        var flag1 = true;
        var flag2 = true;
        for (var i = 0; i < tabPanel.length; i++) {
            tabPanel[i].addEventListener("click", function () {
                //alert("您点击了：" + this.innerHTML);
                // 在这里添加您想要执行的操作
                //页面数据加载定时器(每次只调用一次)
                setTimeout(function () {
                    //加载内容start
                    dgrid1 = $NG.getCmpApi('p_form_zxb_d'); //点击tab页后赋值给已经定义好的tab页变量1
                    dgrid2 = $NG.getCmpApi('p_form_swb_d'); //点击tab页后赋值给已经定义好的tab页变量2
                    //tab页1要执行的事件
                    if (dgrid1 && flag1) {
                        dgrid1.addRows({
                            u_qyzz: '11',
                            u_yjsm: '22'
                        });
                        flag1 = false; //只让点击激活事件执行一次,避免每次点击都执行
                    }
                    //tab页2要执行的事件
                    if (dgrid2 && flag2) {
                        dgrid2.addRows({
                            u_bdj: 99,
                            u_zkl: 11
                        });
                        flag2 = false; //只让点击激活事件执行一次,避免每次点击都执行
                    }
                    //加载内容end
                }, 100);
            });
        }

    })
}





//3.字段UI状态更新
$NG.updateUI((updater) => {
    updater.form.mainForm.remark.setProps({ disabled: true, label: "二开修改" });
});

//4.字段数据状态更新
$NG.updateState((updater) => {
    updater.form.setProps((prev) => {
        return { ...prev, value: { ...prev.value, remark: "我是二开脚本设置的" } };
    });
});

//5.change事件
useValuesChange(({ args }) => {
    //TODO
}, p_form_bid_mat_plan_chg_m.u_p_id);
useValuesChange(({ args, form }) => {
    form.setHidden("u_bhtype"); //隐藏
    form.setFieldsValue({ u_bhtype: 1 }); //赋值
    const type = form.getFieldValue("u_bhtype"); //获取值
    console.log(type);
    if (type == 1) {
        form.setReadOnly("phid_pc"); //只读
        form.setRequired("u_bqxmmc"); //必输
    } else {
        form.setReadOnly("u_bqxmmc");
        form.setRequired("phid_pc");
    }
}, "p_form_tbbhsq.bill_name");
//6.按钮事件
useClick(async function ({ args }) {
    //按钮点击事件
}, "save");

useBeforeClick(async function ({ args }) {
    //按钮点击前事件
    return false; // 取消向下执行
}, "save");

//7.表体二开
// 订阅数据行更新 (单行)
useUpdateRow(({ args, table }) => {
    //TODDO
}, "table1");

// 订阅整表数据更新，包括增行、删行、imp引入、数据源直接变更等操作时 （多行）
useUpdateRows(({ args, table }) => {
    //TODDO
}, "table1");

// 订阅编辑字段更新（单元格）
useDataIndexChange(({ args, table }) => { }, "applyCount");

//-----------------------------------------------------------
/***
 * 二、业务场景实现
 *
 */


//2.获取容器
var mstform = $NG.getCmpApi("p_form_tenderProRiskReco_m_ngOrgHelp");
var toolbar = $NG.getCmpApi("toolbar_top");
//3.字段赋值/取值
mstform.setFieldsValue({ title: "测试标题" }); //文本
$NG.updateState((updater) => {
    //文本
    updater.data.p_form_bid_mat_plan_m.setProps({
        title: "测试标题",
    });
});
$NG.updateState((updater) => {
    //帮助字段
    updater.data.p_form_bid_mat_plan_m.setProps({
        u_pc_company: {
            value: phid_org,
            label: phid_orgname,
        },
    });
});

mstform.getFieldsValues().pc;






//4.2.请求
var encodeParamscode = $NG.CryptoJS.encode({
    //参数sql参数拼接sqlStr：取值字段，tbname：表或查询，queryStr：条件
    sqlStr: "phid,compname,crmphid",
    tbname: ` (select fg3_enterprise.phid phid,fg3_enterprise.compname compname,crm3_advance_project.phid crmphid  from crm3_advance_project left join crm3_advance_project.user_project_owner = fg3_enterprise.phid) tb `,
    queryStr: "tb.crmphid=" + $NG.getCmpApi("p_form_zxps_m").getValues().pc,
});


$NG.request
    .post({
        url: "Addin/ExtendFunc/Action?funcName=pc_user",
        data: { encodeParams: encodeParamscode },
    })
    .then((res) => {
        //TODDO
    });

//5.联动更新（帮助选择后带入/选择后功能扩展取数带入）
//项目名称变化时自动带入项目公司、投资概算（需求）
useValuesChange(({ args }) => {
    console.log(args[0]);
    //const phid_pc = args[0].pc.PhId;
    const phid_pc = args[0].pc.value;
    //从项目取值
    if (phid_pc) {
        console.log(phid_pc);
        //从项目取值
        $NG.execServer("getProjInfo", { phid_pc: phid_pc }, function (res) {
            const data = JSON.parse(res.data);
            const phid_org = data[0].extendObjects.phid_org;
            const phid_orgname = data[0].extendObjects.oname;
            const amt = data[0].extendObjects.approx_contract_fc;
            //项目公司、投资概算
            $NG.updateState((updater) => {
                updater.data.p_form_bid_mat_plan_m.setProps({
                    u_pc_company: {
                        //帮助需要赋两个值value、label
                        value: phid_org,
                        label: phid_orgname,
                    },
                    u_invest_estimate: amt,
                });
            });
        });
    }
    //项目变化时，标题=项目名称+计划类型
    //const pc_name = args[0].pc.origin.projectnameonly;
    const pc_name = args[0].pc.origin.ProjectName;
    //undefined处理
    const plan_type =
        form.getFieldValue().u_plan_type == undefined
            ? ""
            : form.getFieldValue().u_plan_type.label;
    //更新标题
    $NG.updateState((updater) => {
        updater.data.p_form_bid_mat_plan_m.setProps({
            title: pc_name + ` - ` + plan_type,
        });
    });
}, "p_form_bid_mat_plan_m.pc");

//post请求的方式取数
useValuesChange((args) => {
    debugger;
    var encodeParamscode = $NG.CryptoJS.encode({
        sqlStr: "phid,compname,crmphid",
        tbname: ` (select fg3_enterprise.phid phid,fg3_enterprise.compname compname,crm3_advance_project.phid crmphid  from crm3_advance_project left join crm3_advance_project.user_project_owner = fg3_enterprise.phid) tb `,
        queryStr: "tb.crmphid=" + $NG.getCmpApi("p_form_zxps_m").getValues().pc,
    });
    $NG.request
        .post({
            url: "Addin/ExtendFunc/Action?funcName=pc_user",
            data: { encodeParams: encodeParamscode },
        })
        .then((res) => {
            if (res.count > 0) {
                $NG.updateState(function (updater, state) {
                    // form.setFieldsValue({title:JSON.parse(res.data)[0].extendObjects.username});//给控件赋值
                    updater.data.p_form_zxps_m.setProps({
                        u_lhtcy: {
                            value: JSON.parse(res.data)[0].extendObjects.phid,
                            label: JSON.parse(res.data)[0].extendObjects.compname,
                        },
                    });
                });
            }
        });
}, "p_form_zxps_m.pc");




//8.表体编辑更新（单元格）
useDataIndexChange(({ args }) => {
    //store
    const store = args[1].table.store;
    var sumAmt = 0;
    store.data.forEach((item) => {
        sumAmt += item.u_pre_amt_chged; //遍历汇总
    });
    console.log(sumAmt);
    //汇总赋值
    $NG.updateState((updater) => {
        updater.data.p_form_bid_mat_plan_chg_m.setProps({
            u_sum_amt: sumAmt,
        });
    });
}, "u_pre_amt_chged");

//9.表体数据行更新（单行计算）
var tables = $NG.getCmpApi("p_form_bid_price_contrl_d");
useUpdateRow(({ args, table }) => {
    const record = args[0];
    //预估总价
    if (record.u_qty && record.u_prc) {
        record.u_amt = (
            parseFloat(record.u_qty) * parseFloat(record.u_prc)
        ).toFixed(2);
    }
    //审定预估总价
    if (record.u_chg_qty && record.u_chg_prc) {
        record.u_chg_amt = (
            parseFloat(record.u_chg_qty) * parseFloat(record.u_chg_prc)
        ).toFixed(2);
    }
    tables.updateRow(record);
}, "p_form_bid_price_contrl_d");

//10.表体数据变化（增行、删行、引入）时，汇总计算至表头
useUpdateRows(({ args }) => {
    var sumAmtOri = 0;
    var sumAmtChg = 0;
    const rows = args[0];
    rows.forEach((items) => {
        if (items.u_ori_pre_amt) {
            sumAmtOri += parseFloat(items.u_ori_pre_amt);
        }
        if (items.u_pre_amt_chged) {
            sumAmtChg += parseFloat(items.u_pre_amt_chged);
        }
        //汇总赋值
        $NG.updateState((updater) => {
            updater.data.p_form_bid_mat_plan_chg_m.setProps({
                u_ori_sum_amt: sumAmtOri,
                u_sum_amt: sumAmtChg,
            });
        });
    });
}, "p_form_bid_mat_plan_chg_d");

//11.按钮属性
// 显示帮助按钮
toolbar.showButton("help");
// 隐藏帮助按钮
toolbar.hideButton("help");
// 禁用返回按钮
toolbar.setReadOnly("back", true);
// 取消禁用返回按钮
toolbar.setReadOnly("back", false);

//12.按钮事件
//12.1 按钮点击前事件
useBeforeClick(async function ({ args }) {
    //按钮点击前事件
    console.log(args);
    var pcVal = mstform.getValues().pc; //获取表头字段值
    console.log(pcVal);
    if (pcVal == null || pcVal == "" || pcVal == "null") {
        $NG.alert("请先选择项目!!!");
        return false; // 取消向下执行
    }
}, "imp");
//12.2 按钮点击事件
useClick(async function ({ args }) {
    //按钮点击事件
}, "imp");

//13.字段属性设置（必输）
//新增更新字段UI状态，项目必录
$NG.updateUI(function (updater, state) {
    updater.form.p_form_bid_mat_plan_m.pc.setProps({
        required: true, //required是否必输
    });
});

/**
 * 14.功能扩展2
 */
$NG.AllReady(function (page) {
    const encodeParamscode = `select oname from fg_orglist where phid = (select h.phid_org from fg3_user f,hr_epm_main h where f.userno = h.bill_no and f.phid = '${phid}')`;
    $NG.request
        .post({
            url: "http://pm.test.gsjtw.cc/execute/sql",
            data: { encodeParams: encodeParamscode },
        })
        .then((res) => {
            const data = JSON.parse(res.data)[0];
            //TODDO
        });
});
/**
 *
 * 监听按钮
 */
useAction("onClick")(() => { }, "u_appear_pro");
/**
 * 获取当前活动tab
 */
useAction("onActiveKeyChange")(function (res) {
    //console.log(res);
    const actionTab = res.key;
    if (actionTab != "TabPage1") {
        $NG.getCmpApi("toolbar_top").setReadOnly("u_u_cnt_change");
    }
    //
});
/**
 * 计算工期
 */
useValuesChange(({ args }) => {
    const startdt = mstform.getItem("u_startdt").getValue();
    const enddt = mstform.getItem("u_enddt").getValue();
    if (startdt != null && enddt != null) {
        // 定义起始日期和结束日期
        const startDate = new Date(startdt);
        const endDate = new Date(enddt);
        // 计算相差的毫秒数
        const timeDiff = endDate.getTime() - startDate.getTime();
        // 将毫秒数转换为天数（1天 = 24小时 * 60分钟 * 60秒 * 1000毫秒）
        const diffDays = timeDiff / (1000 * 3600 * 24) + 1;
        mstform.getItem("u_limit").setValue(diffDays);
    }
}, "p_form_real_estate_protab.u_startdt");
/**
 * 6.0 表体计算逻辑
 */
// 订阅编辑字段更新
useDataIndexChange(({ args, instance }) => {
    const record = args[0];
    const hsje = record.u_xsehsje;
    const sl = record.u_xsesl / 100;
    //不含税金额=含税金额/(1+税率)
    const bhsje = Number((hsje / (1 + sl)).toFixed(2));
    record.u_xsebhsje = bhsje;
    //税金=不含税金额 * 税率
    const sj = Number((bhsje * sl).toFixed(2));
    record.u_xsesj = sj;
    instance.updateRow(args[0]);
}, "u_xsesl");
/**
 * 请求拦截
 */
listPage;
// todo 列表页面逻辑
//console.log("listPage", listPage);
useAction("onBeforeClick")((result) => {
    //console.log("去审核按钮被单击了！", result);
    // 请求后拦截器
    //   $NG.request.on("response", async (response, requestOptions) => {
    //     console.log("resp",response);
    //     console.log("requestOptions", requestOptions);
    //     const data = await response[requestOptions.responseType || "json"]();
    //     if (data.status === 401) {
    //     } // 错误处理
    //     return response;
    //   });

    // 请求前拦截器
    $NG.request.on("request", (url, options) => {
        // console.log("url", url);
        const urls = [];
        const optionsa = [];
        if (
            url !== "/ngpm/SUP/CustomPC/UnVerify" &&
            options.url !== "/ngpm/SUP/CustomPC/UnVerify"
        ) {
            urls.push(url);
            optionsa.push(options);
        }
        if (options.url == "/ngpm/SUP/CustomPC/UnVerify") {
            const urls = [];
            urls.push(options.url);
            const phid = options.data.id;
            if (urls.concat("/ngpm/SUP/CustomPC/UnVerify")) {
                $NG.execServer("getBasicNewgy", { phid: phid }, function (res) {
                    if (res.count > 0) {
                        $NG.alert("此单据已被其他单据引用不允许去审核！");
                        throw "此单据已被其他单据引用不允许去审核！";
                    }
                });
            }
            const phids = [];
            phids.push(phid);
            pd = phids[0];
        } else {
            return { url: urls, options: optionsa };
        }
    });
}, "unverify");
/**
 * 表体按钮隐藏
 */

$NG.getCmpApi("toolbar_p_form_contract_d44").getItem("attachment").setHidden();
/**
 * 表体穿透
 */
const url = window.location.href;
const arr = $NG.split(url, "/");
const urlp = arr[2];

if (page.oType == "edit" || page.oType == "add" || page.oType == "view") {
    useAction("clickHighlight")(function (e) {
        //获取当前选中行
        const { u_cnt_phid } = $NG.getCmpApi("p_form_ccontract_d").getSelectedRow();
        if (u_cnt_phid) {
            $NG.open(
                "https://" +
                urlp +
                "/ngpm/PMS/PCM/CntM/CntMEdit?otype=view&id=" +
                u_cnt_phid,
                { AppTitle: "合同信息" }
            );
        }
    });
}
/**
 * 设置样式
 */

$NG.updateUI(function (updater, state) {
    // 修改customfilebilltoform表单BilltoId字段的required属性
    updater.editGrid.p_form_ccontract_d.u_proname.setProps({
        cellStyle: { color: "blue", "text-decoration": "underline" },
    });
});

//表体按钮置灰
$NG.getCmpApi("toolbar_p_form_economic_aggre_d").getItem("imp").setDisabled();
//表体按钮隐藏
$NG.getCmpApi("toolbar_p_form_economic_aggre_d").getItem("imp").setHidden();
//刷新组件
$NG
    .getCmpApi("toolbar_p_form_economic_aggre_d")
    .getItem("imp")
    .refreshComponent();

//按钮单击事件
$NG
    .getCmpApi("toolbar_p_form_economic_aggre_d3")
    .getItem("imp")
    .getRef()
    .click();
//清空表体
$NG.getCmpApi("p_form_economic_aggre_d5").clearRows();

//隐藏表头按钮
//隐藏单据引用
$NG.getCmpApi("").setHidden("imp");

/**
 * 列表界面逻辑
 */
/**
 * 修改自定义单据状态
 * @param {*} listPage 列表界面
 * @param {*} arr url
 * @param {*} userId 登录用户id
 * @param {*} state 要修改的单据状态 关闭 '0' 取消关闭 '1'
 * @param {*} formName 表名
 * @param {*} info 提示正确信息
 * @param {*} err 提示错误信息
 * @returns
 */
const judgeState = async (listPage, arr, userId, state, formName, info) => {
    const selectedRecord = listPage.getSelectedRecord();
    if (!selectedRecord.length) {
        await $NG.alert("请先选择数据行");
        return;
    }
    if (selectedRecord[0].app_status == 1) {
        await $NG.alert("审核单据不允许关闭单据");
        return;
    }

    $NG
        .confirm("若关闭此单据,后续将不能被其他单据引用,确定要关闭此单据吗?")
        .then(function (result) {
            if (result) {
                const phid = selectedRecord[0].phid;
                $NG.request
                    .post({
                        url: `https://${arr[2]}/ngpm/form/customer/status`,
                        data: {
                            formName: formName,
                            phid: phid,
                            uClosePron: userId,
                            uState: state,
                        },
                    })
                    .then(async (res) => {
                        const { Code, Message } = res;
                        if (Code == "0") {
                            await $NG.alert(info);
                            await listPage.refreshList();
                        } else {
                            await $NG.alert(Message);
                        }
                    });
            }
        });
};


//表体多字段设置属性
$NG.updateUI((updater) => {
    const fields = ["field1", "field2", "field3"];
    fields.forEach((field) => {
        updater.editGrid.table[field].setProps({
            hidden: true, //隐藏
            required: true, //必输
            disabled: true, //只读
        });
    });
});

//表体设置样式
$NG.updateUI((updater) => {
    updater.editGrid.table.field.setProps({
        cellStyle: { color: "blue", "text-decoration": "underline" },  //设置单元格样式
        headerStyle: { color: "blue", "text-decoration": "underline" },//设置列头样式
    });
});

//change事件
useValuesChange(({ args, form }) => {
    form.setHidden("u_bhtype"); //隐藏
    form.setFieldsValue({ u_bhtype: 1 }); //赋值
    const type = form.getFieldValue("u_bhtype"); //获取值
    if (type === 1) {
        form.setReadOnly("phid_pc"); //只读
        form.setRequired("u_bqxmmc"); //必输
    } else {
        form.setReadOnly("u_bqxmmc");
        form.setRequired("phid_pc");
    }
}, "p_form_tbbhsq.bill_name");

//按钮事件
useClick(async function ({ args }) {
    //按钮点击事件
}, "save");

//按钮点击前事件
useBeforeClick(async function ({ args }) {
    //按钮点击前事件
    return false; // 取消向下执行
}, "save");

//监听按钮
useAction("onClick")(() => {
}, "u_appear_pro");

//获取当前活动tab
useAction("onActiveKeyChange")(function (res) {
    const actionTab = res.key;
    if (actionTab !== "TabPage1") {
        //...
    }
});

//表体监听事件
// 事件：{startEditing activeEditor clickHighlight hideOnSinglePage keyboardEvent onHeaderCellClick}
//$NG.getObjValue(e,'instance.state.selected.dataIndex')//获取当前选中字段
useAction("事件")((e) => {
    $NG.getObjValue(e, 'instance.state.selected.dataIndex')
    //...
});
//示例
useAction("clickHighlight")(function (e) {
    //获取当前选中行
    const { u_proname } = $NG.getCmpApi("p_form_building_d").getSelectedRow();
    //当前选中列
    const selected = $NG.getObjValue(e, 'instance.state.selected.dataIndex')
    if (u_proname && selected === "u_proname") {
        $NG.execServer("getCntPhidByPc", { phid: u_proname }, function (res) {
            const { data, count } = res;
            if (count > 0) {
                const data2 = JSON.parse(data)[0].extendObjects;
                const cnt_phid = data2.phid;
                if (cnt_phid) {
                    $NG.open(
                        `https://${cur_url}/ngpm/PMS/PCM/CntM/CntMEdit?otype=view&id=${cnt_phid}`,
                        { AppTitle: "合同信息" }
                    );
                }
            } else {
                $NG.alert("该项目没有合同信息！");
            }
        });
    }
});

//字段赋值 1.
mstform.setFieldsValue({ title: "测试标题" });
//字段赋值 2.
$NG.updateState((updater) => {
    updater.data.p_form_bid_mat_plan_m.setProps({
        title: "测试标题",
    });
});

//帮助字段赋值
$NG.updateState((updater) => {
    updater.data.p_form_bid_mat_plan_m.setProps({
        u_pc_company: {
            value: phid_org,
            label: phid_orgname,
        },
    });
});

//帮助过滤1
mstform.setConfig({
    input4: {
        clientSqlFilter: { type: 1 },
        placeholder: `按type=1过滤`,
        required: true,
    },
});
//系统表单帮助过滤2
$NG.updateUI((updater, state) => {
    updater.fieldSetForm.ReortJgysBillForm.user_ysjd.setProps({
        clientSqlFilter: "c_no in ('1','2','3','4')"
    }
    );
});



//列表获取工具栏
const listToolbar = $NG.getCmpApi("toolbar");

//表头获取工具栏
const toolbar = $NG.getCmpApi("toolbar_top");

//获取表体工具栏
const gridToolbar = $NG.getCmpApi("toolbar_表体")

//表体按钮隐藏
gridToolbar.getItem("attachment").setHidden();

//表体按钮置灰
gridToolbar.getItem("imp").setDisabled();

//刷新组件
gridToolbar.getItem("imp").refreshComponent();

//触发单击事件
gridToolbar.getItem("imp").getRef().click();

//表体增行时赋默认值
grid.addRows({ u_is_ref: "0" });

//表体字段赋值

//清空表体
grid.clearRows();

//获取当前选中行并解构出来
const { u_cnt_phid, u_cnt_change_phid } = grid.getSelectedRow();

// 订阅编辑字段更新
useDataIndexChange(({ args, instance }) => {
    const record = args[0];
    record.u_sysl = record.u_sl; //赋值
    instance.updateRow(args[0]);
}, "u_sl");

//表体监听某些字段将这些字段汇总到目标字段
{
    const updateFieldsSum = (record, fields, targetField) => {
        const sum = fields.reduce((total, field) => {
            return total + (record[field] === undefined ? 0 : record[field]);
        }, 0);
        record[targetField] = sum;
    };

    const onUpdate =
        (fields, targetField) =>
            ({ args, instance }) => {
                const record = args[0];
                updateFieldsSum(record, fields, targetField);
                instance.updateRow(args[0]);
            };

    // 赋值u_zgzj
    const zgzjFields = ["u_zsyg", "u_lwpqyg", "u_lwyg"];
    zgzjFields.forEach((field) =>
        useDataIndexChange(onUpdate(zgzjFields, "u_zgzj"), field)
    );
}

//自定义打开帮助
$NG.external.openNGHelp({
    type: "NGMultipleHelp",//NGSingleHelp
    helpId: "cnt_change_czqy",
    valueField: "phid",
    labelField: "proname",
    clientSqlFilter:
        "ng_phid_cu = " + org + " and user_ssbk=" + 787231124000001,
}).then((data) => {
    console.log(data)
    //data:拿到帮助选中的数据
})

//获取帮助所带的信息
$NG.getCmpApi("p_form_text_m_phid_pc").getOrigin();

//字段单击前置事件
$NG.updateUI((updater) => {
    updater.form.p_form_text_m.u_test_help.setProps({
        onBeforeOpen: async () => {
            const bill_name = form.getItem("phid_pc").getValue();
            if (!bill_name) {
                $NG.alert("请先填写xxx字段!");
                return false;
            } else {
                return true;
            }
        },
    });
});


$NG.updateState((updater) => {
    updater.data.p_form_text_d.setProps((prev) => {
        return { ...prev, value: { ...prev.value, s: "我是二开脚本设置的" } };
    });
});

//表体字段联动属性设置
updater.editGrid.p_form_pro_quality_goal_plan_d.u_arawd_withhold.setProps(
    (e) => ({
        ...e, editor:
        {
            ...e.editor,
            required: true, //必输
            hidden: true,   //隐藏
            disabled: true, //只读
        }
    })
);

//表体帮助过滤
$NG.updateUI((updater, state) => {
    updater.editGrid.p_form_text_d.u_pc.setProps(
        (e) => ({
            ...e,
            editor: {
                ...e.editor,
                required: true,
                clientSqlFilter: { phid: '787240112000002' },
                placeholder: `按条件过滤`,
            }
        })
    );
});

//附件监听
useBeforeClick(async function ({ args }) {
    //表头附件值判断
    const asr_flag =
        $NG.getPageState().data.p_form_special_work_register_m.asr_flag;
    if (asr_flag) {
        return true;
    } else {
        $NG.alert("请上传特种作业人员身份证、上岗操作证、资格认证证！");
        return false;
    }

    //表体按行判断附件值
    let flag = []
    const rows = $NG.getCmpApi("p_form_special_work_register_d").getRows()
    rows.map((item, index) => {
        item.asr_flag === 0 && flag.push(index + 1)
    })
    if (flag.length !== 0) {
        $NG.alert(`请在第${flag.join(",")}上传特种作业人员身份证、上岗操作证、资格认证证！`)
        return false
    }
}, "save");

//6.0系统表单
const form = $NG.getCmpApi("form")
form.getItem("PhidCon").setValue(1)
form.getItem("PhidCon").setValue({
    value: 1,
    label: "测试"
})

//6.0系统表单设置属性
$NG.updateUI((updater, state) => {
    updater.fieldSetForm.RecBill.PhidCon.setProps({
        hidden: true
    })
});

//表体添加数据
const dgrid = $NG.getCmpApi("p_form_ccontract_d3");
dgrid.addRows(rows);


//页面钩子函数
//单据引用前钩子函数
{
    $NG.PageReady(function (page, { request, alert }) {
        return {
            /**
             * @param defaultData 默认imp导入数据
             * @param containerId 导入容器id
             * imp引入前钩子函数
             * @return IObject|IObject[]
             */
            async transferImpPullData(defaultData, containerId) {

                const rows = $NG.getCmpApi(containerId).getRows();
                //引入时过滤掉已存在的数据
                return filterOutExistingPhids(defaultData, rows);
            }
        };
    });

    /**
     * 两个对象数组过滤掉已存在phid的数据
     * @param array1
     * @param array2
     * @returns {*[]}
     */
    function filterOutExistingPhids(array1, array2) {

        const phidsSet = new Set(array2.map(item => item.phid));

        return array1.filter(item => !phidsSet.has(item.phid));
    }
}

//单据删除前钩子函数
$NG.PageReady(function () {
    return {
        /**
         * @param selectedRecord:IObject[] 当前选择的数据行
         * 单据删除前钩子函数
         * @return {params?: IObject; cancel?: boolean}
         */
        async transferDeleteReqParams(selectedRecord) {
            const org = selectedRecord[0].phid_org;
            const cycle_work = selectedRecord[0].u_cycle_work;
            let flag = 0;
            if (selectedRecord.length > 0) {
                await $NG.execServer("reportIfHasNoDelete", { org: org, cycle_work: cycle_work }, function (res) {
                    flag = res.count;
                })
                if (flag !== 0) {
                    $NG.alert("此单据已被其他单据引用，不允许删除！")
                    return { params: { userParam: 'delete' }, cancel: true }; // 注入额外参数 userParam
                }
            }
        }
    };
});


//列表页面逻辑
{
    (listPage, options) => {
        //列表页面逻辑
        const useBeforeClick = options.useBeforeClick;
        useBeforeClick(async function ({ args }) {
            const selectedRecord = listPage.getSelectedRecord();
            if (selectedRecord.length < 0) return false;
            const org = selectedRecord[0].phid_org;
            const cycle_work = selectedRecord[0].u_cycle_work;
            let flag = 0;
            await $NG.execServer("reportIfHasNoDelete", { org: org, cycle_work: cycle_work }, function (res) {
                flag = res.count;
            })
            if (flag !== 0) {
                $NG.alert("此单据已被其他单据引用，不允许去审核！")
                return false; // 取消向下执行
            }
        }, 'unverify');
    }
}

/**
 * 修改自定义单据状态
 * @param {*} listPage 列表界面
 * @param {*} arr url
 * @param {*} userId 登录用户id
 * @param {*} state 要修改的单据状态 关闭 '0' 取消关闭 '1'
 * @param {*} formName 表名
 * @param {*} info 提示正确信息
 * @param {*} err 提示错误信息
 * @returns
 */
const judgeState = async (listPage, arr, userId, state, formName, info) => {
    const selectedRecord = listPage.getSelectedRecord();
    if (!selectedRecord.length) {
        await $NG.alert("请先选择数据行");
        return;
    }
    if (selectedRecord[0].app_status === 1) {
        await $NG.alert("审核单据不允许关闭单据");
        return;
    }

    $NG
        .confirm("若关闭此单据,后续将不能被其他单据引用,确定要关闭此单据吗?")
        .then(function (result) {
            if (result) {
                const phid = selectedRecord[0].phid;
                $NG.request
                    .post({
                        url: `https://${arr[2]}/ngpm/form/customer/status`,
                        data: {
                            formName: formName,
                            phid: phid,
                            uClosePron: userId,
                            uState: state,
                        },
                    })
                    .then(async (res) => {
                        const { Code, Message } = res;
                        if (Code === "0") {
                            await $NG.alert(info);
                            await listPage.refreshList();
                        } else {
                            await $NG.alert(Message);
                        }
                    });
            }
        });
};




// 表体插入重复数据的检测方法
function insertIfNotExists(data) {
    // 获取当前表体的所有行  
    const existingRows = $NG.getCmpApi('p_form_edsq_d').getRows();
    // 创建一个Map来快速查找u_htzjxx  
    const existingRowsMap = new Map(existingRows.map(row => [row.u_htzjxx, true]));

    // 收集需要插入的新行（这里假设我们直接插入整个data对象，但您可能只需要部分）  
    const newRows = [];

    data.forEach(item => {
        // 检查该item的origin.phid是否已在existingRows中  
        if (!existingRowsMap.has(item.origin.phid)) {
            // 如果不存在，则添加到newRows中（这里以整个item为例）  
            newRows.push(item);

            // 注意：如果您只想插入部分数据，请在这里进行修改  
            // 例如：newRows.push({ /* 仅包含您想插入的字段 */ });  
        }
        // 如果存在，则不执行任何操作，因为不需要插入  
    });

    // 现在，newRows包含了所有需要插入的行  
    // 接下来，您可能需要调用另一个API或函数来实际执行插入操作  
    // 假设有一个函数叫做 insertRows，它接受一个数组并插入到表体中  
    // insertRows(newRows); // 这需要您自己实现或调用现有的API  

    // 注意：这里我没有实现insertRows函数，因为它将依赖于您的具体API或框架  
    console.log('需要插入的数组对象:', newRows); // 仅用于演示  
    return newRows;
}




// 表体字段汇总到表头
useUpdateRows(({ args }) => {
    let sumAmtOri = 0;
    //$NG.getCmpApi("p_form_ccontract_m_u_month_total").setValue(0);
    const rows = args[0];
    rows.forEach((items) => {
        if (items.u_hsje) {
            sumAmtOri += parseFloat(items.u_hsje);
        }
    });
    //汇总赋值
    $NG.getCmpApi("p_form_ccontract_m_u_count1").setValue(sumAmtOri);
}, "p_form_ccontract_d");





// 表头功能扩展赋值给帮助字段
useValuesChange(({ args }) => {
    debugger;
    $NG.execServer('lzh_cjfzjzh', { phid: $NG.getCmpApi('p_form_edsq1').getItem('u_cjf').getValue() }, function (res) {
        const datas = JSON.parse(res.data)[0].extendObjects;
        //帮助字段赋值
        $NG.updateState((updater) => {
            //【注意这里的表名不能为控件ID，必须要是表名】
            updater.data.p_form_edsq.setProps({
                u_cjfzjzh: {
                    value: datas.phid,
                    label: datas.name,
                },
            });
        });

    });
}, 'p_form_edsq1.u_cjf');

// select pt.phid pc,pm.user_purchaser up,pm.user_business_type ubt,pm.bill_name,fg.oname dept,fs.c_name cpx,fg.oname qyzx,pm.user_pro_type upt from pcm3_cnt_m pm left join fg_orglist fg on fg.phid=pm.user_division left join fg_simple_data fs on fs.phid=pm.user_product_line left join project_table pt on pt.phid=pm.phid_pc where pm.phid=@cnt
useValuesChange(({ args }) => {
    debugger;
    $NG.execServer('getCntInfo', { phid: $NG.getCmpApi('p_form_equipment_list').getItem('u_cnt_no').getValue() }, function (res) {
        const datas = JSON.parse(res.data)[0].extendObjects;
        //帮助字段赋值
        $NG.updateState((updater) => {
            //【注意这里的表名不能为控件ID，必须要是表名】
            updater.data.p_form_equipment_list.setProps({
                u_cnt_name: datas.bill_name,
                u_product_line: {
                    value: datas.user_product_line,
                    label: datas.name,
                }
            });
        });

    });
}, 'p_form_equipment_list.u_cnt_no');





//表体根据字段判断其他表体字段设置属性【只读、编辑、必填】
//是否垫付选择判断控制付款计划字段的是否只读 【选否 付款计划为只读   选是  付款计划可编辑】
useDataIndexChange(({ args, instance }) => {
    const sfdf = args[0].u_sfdf;
    if (sfdf == '2') {
        //表体多字段设置属性
        $NG.updateUI((updater) => {
            //【注意这里的表名不能为控件ID，必须要是表名】
            updater.editGrid.p_form_edsq_d.u_fkjhzs.setProps({
                required: true, //必输
                hidden: true,   //隐藏
                disabled: true, //只读

            });
        });
    } else {
        //表体多字段设置属性
        $NG.updateUI((updater) => {
            //【注意这里的表名不能为控件ID，必须要是表名】
            updater.editGrid.p_form_edsq_d.u_fkjhzs.setProps({
                required: false, //必输
                hidden: false,   //隐藏
                disabled: false, //只读
            });
        });
    }
}, "p_form_edsq_d.u_sfdf");






useDataIndexChange(({ args, instance }) => {
    const sfdf = args[0].u_sfdf;
    if (sfdf == '2') {
        //表体多字段设置属性
        $NG.updateUI((updater) => {
            updater.editGrid.p_form_edsq_d.u_fkjhzs.setProps({
                disabled: true, //只读
            });
        });
    } else {
        //表体多字段设置属性
        $NG.updateUI((updater) => {
            updater.editGrid.p_form_edsq_d.u_fkjhzs.setProps({
                disabled: false, //可编辑
            });
        });
    }
}, "p_form_edsq_d.u_sfdf");




// 对表体行进行可编辑控制
// updater的更新路径可以通过layout查看
$NG.updateUI(function (updater, layout) {
    // 设置主表的字段remark为不可编辑
    //updater.form.xxx.remark.setProps(fdisabled:true );
    // 设置明细表的字段remark为不可编辑
    /**updater.grid.xxx.s.setProps(p=>{
    return {...p,editor:{...p.editor, disabled: true}};
    });*/

    updater.grid.p_form_edsq_d.u_fkjhzs.setProps(p => {
        return {
            ...p,
            editor: {
                ...p.editor,
                disabled({ row }) {
                    //当前行的u_sfdf字段等于1时，u_fkjhzs不可编辑【注意数字和字符得区别 不相等!】
                    return row.u_sfdf === '2';
                }
            }
        }
    })
})



// 系统表单tab页签获取表体容器

